package com.immortal.core.module.log.annotation;

import com.immortal.core.module.log.enums.LogType;
import com.immortal.core.module.log.handlers.LogHandler;

import java.lang.annotation.*;

/**
 * <p>Title: Log</p>
 * <p>Description: TODO</p>
 *
 * @author xukk
 * @version 1.0
 * @date 2018/6/8
 */
@Documented
@Target(value = {ElementType.METHOD})
@Retention(value = RetentionPolicy.RUNTIME)
@Inherited
public @interface Log {
    /** 模块 */
    String module() default "";
    /** 功能 */
    String action() default "";
    String function() default "";
    /** 渠道 */
    String channel() default "";
    /** 普通字符串*/
    String value() default "我是日志注解";
    /**  额外属性 */
    String extra() default "";
    /** 表达式模板*/
    String pattern() default "我是表达式";
    /** 存储类型*/
    LogType type() default LogType.MYSQL;
    /** 条件*/
    String condition() default "";
    /** aop 类型*/
    LogAopType logAopType() default LogAopType.AROUND;
    /** 类型*/
    LogFilterType filterType() default LogFilterType.String;
    /** 回调执行类*/
    Class<?> fallback() default LogHandler.class;
}
